package com.td.module.equipment.service.acquisitioninfo;

import com.td.framework.common.pojo.PageResult;
import com.td.module.equipment.controller.admin.acquisitioninfo.vo.AcquisitionInfoCreateReqVO;
import com.td.module.equipment.controller.admin.acquisitioninfo.vo.AcquisitionInfoExportReqVO;
import com.td.module.equipment.controller.admin.acquisitioninfo.vo.AcquisitionInfoPageReqVO;
import com.td.module.equipment.controller.admin.acquisitioninfo.vo.AcquisitionInfoUpdateReqVO;
import com.td.module.equipment.dal.dataobject.acquisitioninfo.AcquisitionInfoDO;
import com.td.module.equipment.framework.core.dto.EquipmentDataDto;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 设备采集信息 Service 接口
 *
 * @author 王翔翔
 */
public interface AcquisitionInfoService {

    /**
     * 创建设备采集信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createAcquisitionInfo(@Valid AcquisitionInfoCreateReqVO createReqVO);

    /**
     * 更新设备采集信息
     *
     * @param updateReqVO 更新信息
     */
    void updateAcquisitionInfo(@Valid AcquisitionInfoUpdateReqVO updateReqVO);

    /**
     * 删除设备采集信息
     *
     * @param id 编号
     */
    void deleteAcquisitionInfo(Long id);

    /**
     * 获得设备采集信息
     *
     * @param id 编号
     * @return 设备采集信息
     */
    AcquisitionInfoDO getAcquisitionInfo(Long id);

    /**
     * 获得设备采集信息列表
     *
     * @param ids 编号
     * @return 设备采集信息列表
     */
    List<AcquisitionInfoDO> getAcquisitionInfoList(Collection<Long> ids);

    /**
     * 获得设备采集信息分页
     *
     * @param pageReqVO 分页查询
     * @return 设备采集信息分页
     */
    PageResult<AcquisitionInfoDO> getAcquisitionInfoPage(AcquisitionInfoPageReqVO pageReqVO);

    /**
     * 获得设备采集信息列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 设备采集信息列表
     */
    List<AcquisitionInfoDO> getAcquisitionInfoList(AcquisitionInfoExportReqVO exportReqVO);

    /**
     * 批量录入设备采集数据
     * @param equipmentDataDto
     */
    void createAcquisitionInfo(@Valid EquipmentDataDto equipmentDataDto);

    /**
     * 获得设备采集信息列表
     *
     * @return 设备采集信息列表
     */
    List<AcquisitionInfoDO> getInfoGroupMonitorTime(AcquisitionInfoPageReqVO pageReqVO);



    /**
     * 统计水质信息数量
     * @return
     */
   Integer sumWaterQuality();
}
